package com.vhall.component.entity.room.vo;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.vhall.component.entity.room.enums.RoomAuditStatusEnum;
import com.vhall.component.framework.common.annotation.ParamName;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.Pattern;
import java.io.Serializable;
import java.util.List;

/**
 * @author rui.zhou
 * @date 2021/5/12 14:48
 */
@Data
public class RoomConsoleListVO implements Serializable {

    private static final long serialVersionUID = 6149653524610759064L;
    /**
     * 直播预计开始时间-开始
     */
    @ParamName(value = "start_time")
    @JsonProperty(value = "start_time")
    @Pattern(regexp = "^((([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29))",
            message = "时间格式应为：yyyy-MM-dd")
    private String beginTime;
    /**
     * 直播预计开始时间-结束
     */
    @ParamName(value = "end_time")
    @JsonProperty(value = "end_time")
    @Pattern(regexp = "^((([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29))",
            message = "时间格式应为：yyyy-MM-dd")
    private String endTime;

    /**
     * 直播创建时间-开始
     */
    @ParamName(value = "created_begin_time")
    @JsonProperty(value = "created_begin_time")
    @Pattern(regexp = "^((([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29))",
            message = "时间格式应为：yyyy-MM-dd")
    private String createdBeginTime;
    /**
     * 直播创建时间-结束
     */
    @ParamName(value = "created_end_time")
    @JsonProperty(value = "created_end_time")
    @Pattern(regexp = "^((([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29))",
            message = "时间格式应为：yyyy-MM-dd")
    private String createdEndTime;



    private Integer page = 1;

    @ParamName("page_size")
    @JsonProperty("page_size")
    private Integer pageSize = 20;

    @ParamName("keyword")
    private String keyword;

    @JsonProperty("page_channel_id")
    @ParamName("page_channel_id")
    private Integer pageChannelId;

    /**
     * 房间审核状态
     * 审核状态:
     * 0|待审核,-1|审核驳回,1|审核通过
     */
    @JsonProperty(value = "audit_status")
    @ParamName(value = "audit_status")
    private Integer auditStatus;

    /**
     * 房间状态
     * 0=待直播 1=直播中 2=已结束
     */
    @JsonProperty("option_status")
    @ParamName("option_status")
    private Integer optionStatus;

    /**
     * 直播类型
     * <p>
     * 1 页面叫互动直播
     * 2  假直播 页面叫纯直播、视频直播、录制直播
     * 3 点播
     */
    @ParamName(value = "live_types")
    @JsonProperty(value = "live_types")
    private List<Integer> liveTypes;

    /**
     * 回放审核状态
     * REJECTION(-1, "审核驳回"),
     * CHECK_PENDING(0, "待审核"),
     * APPROVED(1, "审核通过"),
     * <p>
     * SUBMIT_FOR_APPROVAL(9, "待送审"),
     * <p>
     * {@link RoomAuditStatusEnum}
     */
    @ApiModelProperty(value = "回放审核状态")
    @ParamName("playback_status")
    @JsonProperty("playback_status")
    private Integer playbackStatus;

    /**
     * 业务检查状态
     * REJECTION(-1, "审核驳回"),
     * CHECK_PENDING(0, "待审核"),
     * APPROVED(1, "审核通过"),
     * <p>
     * SUBMIT_FOR_APPROVAL(9, "待送审"),
     * <p>
     * {@link RoomAuditStatusEnum}
     */
    @ApiModelProperty(value = "业务检查状态")
    @ParamName("inspection_status")
    @JsonProperty("inspection_status")
    private Integer inspectionStatus;

    /**
     * 合规检查状态
     * -1, "审核驳回"
     * 0, "待审核"
     * 1, "审核通过"
     */
    @ApiModelProperty(value = "合规检查状态")
    @JsonProperty("compliance_check_status")
    @ParamName("compliance_check_status")
    private Integer complianceCheckStatus;
    /**
     * 正式/测试房间标识 测试直播:0,正式直播:1
     */
    @ParamName("live_rormal")
    private Integer liveRormal;
    /**
     * 排序字段
     * [created_at:创建时间,start_time:直播开始时间]
     */
    @ParamName("sort_column")
    private String sortColumn;

    /**
     * 回放审核状态(产品类二次审核)
     * REJECTION(-1, "审核驳回"),
     * CHECK_PENDING(0, "待审核"),
     * APPROVED(1, "审核通过"),
     * <p>
     * SUBMIT_FOR_APPROVAL(9, "待送审"),
     * <p>
     * {@link RoomAuditStatusEnum}
     */
    @JsonProperty("playback_status_second")
    @ParamName("playback_status_second")
    private Integer playbackStatusSecond;
    /**
     * 直播来源
     */
    @JsonProperty("org_code")
    @ParamName("org_code")
    private String orgCode;



}
